package javaeSE.string;

//import org.junit.Test;

//字符串局部翻转
public class ReverseString {

    public static void main(String[] args) {
      final String res1 =   reverse("asdfg",0,4);
      System.out.println(res1);
      final String res2 =  reverse2("asdfg",0,4);
      System.out.println(res2);
    }
//    将一个字符串进行反转。将字符串中指定部分进行反转。比如“abcdefg”反转为”abfedcg”方式一：转换为char[]
    public static String reverse(String str,int startIndex,int endIndex){

        if(str != null){
            // 字符串转数组
            char[] arr = str.toCharArray();
            for(int i = startIndex,j = endIndex;i < j;i++,j--){
                char temp = arr[i];
                arr[i] = arr[j];
                arr[j] = temp;
            }
            return new String(arr);
        }
        return null;
    }

    //方式二：使用String的拼接
    public static String reverse1(String str,int startIndex,int endIndex){
        if(str != null){
            //第1部分
            String reverseStr = str.substring(0,startIndex);
            //第2部分
            for(int i = endIndex;i >= startIndex;i--){
                reverseStr += str.charAt(i);
            }
            //第3部分
            reverseStr += str.substring(endIndex + 1);
            return reverseStr;
        }
        return null;
    }
    //方式三：使用StringBuffer/StringBuilder替换String  效率高
    public static String reverse2(String str,int startIndex,int endIndex){
        if(str != null){
            StringBuilder builder = new StringBuilder(str.length());
            //第1部分
            builder.append(str.substring(0,startIndex));
            //第2部分
            for(int i = endIndex;i >= startIndex;i--){
                builder.append(str.charAt(i));
            }
            //第3部分
            builder.append(str.substring(endIndex + 1));//endIndex + 1 一直到结尾
            return builder.toString();
        }
        return null;
    }
    
}
